草庐IT

Java CMS GC 行为

全部标签

c++ - ROS AsyncSpinner 的多线程行为

我试图了解ROS中的AsyncSpinner是如何工作的,因为我可能误解了一些东西。大家可以找一个类似的问题here.如图所示here它的定义提到:Asynchronousspinner:spawnsacoupleofthreads(configurable)thatwillexecutecallbacksinparallelwhilenotblockingthethreadthatcalledit.Thestart/stopmethodallowstocontrolwhenthecallbacksstartbeingprocessedandwhenitshouldstop.而在官方文

c++ - static_cast 和 dynamic_cast 在特定场景中的不同行为

在下面的场景中,我没有弄清楚static_cast和dynamic_cast之间的真正区别:**///withstatic_cast///**classFoo{};classBar:publicFoo{public:voidfunc(){return;}};intmain(intargc,char**argv){Foo*f=newFoo;Bar*b=static_cast(f);b->func();return0;}Output:SuccessfullyBuildandCompiled!**///withdynamic_cast///**classFoo{};classBar:publ

c++ - 使用自定义行为实现字符串类

在我们的一个类(class)中,先生说模板允许一个人自定义类的行为,然后他给出了字符串类的例子,用几行代码我们可以从STL中自定义字符串类,就像我们可以做到的那样将'a'和'z'相同,'b'和'y'相同,'c'和'x'相同,依此类推。类似的'A'和'Z'相同等。"abc"=="zyx"为真;"abc"=="zyx"为假;"abc=="Zyx"为真;等等我正在考虑实现这样的字符串类,但我做不到。我们如何使用模板实现这样的字符串类? 最佳答案 这很棘手。您只需要编写自己的traits类,特别是您需要从char_traits派生它。类模板

c++ - 在这种情况下 unique_ptr 的行为应该是什么?

假设我有以下内容:std::unique_ptrpA;pA(newA);在这个复杂的例子中,pA(newA);的行为应该是怎样的?是吗?据我所知,在MSVC2010中,voidoperator()(T*)const;在new之后立即调用fromdefault_delete立即返回并删除指针。而g++(4.7.0)给了我nomatchforcall(std::unique_ptr)(A*)错误。 最佳答案 代码不应编译。std::unique_ptr不会重载operator()。VisualC++2011DeveloperPrevie

c++ - 奇怪的行为

我遇到了ofstream的一个奇怪行为,“对我来说最不奇怪”。这是我的程序,我使用的是VisualStudio2010ExpressEdition。intmain(){std::ofstreamfile("file.txt");file这会产生正确的输出。something1something2现在,如果我用以下代码替换第9行,file.open("file.txt",std::ios::ate);我得到了这个输出。something2但是如果我再次替换第9行,这次用这段代码,file.open("file.txt",std::ios::ate|std::ios::in);我得到了这个

c++ - 在 C++ 中,返回从本地 char 数组创建的字符串会导致内存泄漏或未定义的行为吗?

我想知道这是否会导致C++中的内存泄漏或未定义的结果?stringfoo(){chartempArray[30];strcpy(tempArray,"Thisisatest");returnstring(tempArray);}我知道这在C中是一件坏事,但我还没有找到C++的明确答案。所以每个人都在说不,但我仍然对何时释放内存感到困惑?假设我有调用上述方法的方法voidbar(){stringtestString=foo();}在上面的代码中,从foo()返回的字符串对象在什么时候调用了它的析构函数?是在复制到对象testString后立即执行的吗? 最佳答

c++ - 是在索引一个新的 map 元素并将读取它的东西分配给它未定义的行为,还是只是未指定的?

回答后thisquestion,关于所讨论的代码是否为未定义行为的问题进行了长时间的讨论。这是代码:std::mapword_count;word_count["a"]=word_count.count("a")==0?1:2;首先,众所周知,这至少是未指定的。结果因首先评估作业的哪一侧而异。在我的回答中,我遵循了四个结果案例中的每一个,首先评估哪一方的因素以及该元素是否在此之前存在。还有一个简短的表格出现了:(x=0)=(x==0)?1:2;//startedas(x=0)=(y=="a")?1:2;//changedto我声称它更像这样:(x=0,x)=(x==0)?1:2;//c

c++ - "Static counter"类型行为异常

我正在开发一个基于实体的组件系统,我正在尝试为组件类型分配某个索引:staticstd::size_tgetNextTypeId(){staticstd::size_tlastTypeIdBitIdx{0};++lastTypeIdBitIdx;//Thislineproducestheoutputattheendofthequestionstd::cout::bitIdxwillalwaysbedifferent//fromTypeIdStorage::bitIdxtemplatestructTypeIdStorage{staticconststd::size_tbitIdx;};/

c++ - 此代码行为是否定义明确?

这是一些C++代码:#includeclassA{intx;inty;doublev;public:A(intx,inty):x(x),y(y){std::cerr我得到以下输出:A(3,5)f(9.5)~A()即因为我希望它工作。但我不确定A的析构函数是否必须在f返回后调用。有保障吗?operatordouble*()返回的指针是否会在f的调用中变得无效? 最佳答案 您将A对象声明为f的实际参数,当您这样做时,对于所有效果而言,新对象就像f的局部变量,因此保证在f执行结束时调用~A。如果f返回由operatordouble*()返

c++ - boost::filesystem::path::string() 输出的奇怪行为

pf.string()输出似乎有一些奇怪的行为,其中pf是用p.filename()生成的,其中p是boost::filesystem::path类型,由charconst*或std::string构造。这是代码段:#includenamespacefs=boost::filesystem;intmain(intargc,char**argv){fs::pathp(argv[0]);//orfs::pathp((std::string(argv[0])));fs::path&&pf=p.filename();//orfs::pathpf=p.filename();std::string